¿Cómo se hace un esquema de base de datos? ¿Qué es un esquema de base de datos en SQL Server? ¿Qué es un esquema de base de datos Oracle? ¿Cuáles son los diferentes tipos de esquemas?
Esquema de las bases de datos
Antes de la creación de los SGBD, los datos se guardaban en archivos almacenados en el sistema operativo. Los mismos eran leídos por diferentes programas, lo cual traía una serie de problemas:
El esquema de la base de datos es el modelo de datos lógico, es el diseño general de la estructura de la base de datos. Un esquema se especifica con un conjunto de definiciones que se expresan usando un lenguaje de definición de datos (DDL). Éste incluye órdenes para definir, modificar o borrar las tablas en las que se almacenan los datos, las relaciones entre éstos, definir restricciones de integridad, de acceso, de índices, etc.; es decir, todo lo que se refiera a la definición de la base de datos. El diseño del esquema de la base de datos depende del software SGBD que se va a usar.
Un esquema posee los siguientes elementos:
- Tablas.
- Tipos de datos.
- Integridad.
- Índices.
- Vistas.
- Stored procedures.
- Triggers.
- Seguridad (usuarios, permisos).
El diseño general de la estructura base de datos se denomina el esquema de la base de datos. Un esquema de base de datos se especifica con un conjunto de definiciones que se expresan usando un lenguaje de definición de
datos (DDL).
Tablas
Al crear una tabla se deben añadir sus atributos, representados en columnas. Para cada atributo se debe especificar:
Tipos de dato
Numéricos
Exactos
- Entero pequeño (smallint): entero de dos bytes con una precisión de 5 dígitos. El rango de pequeños enteros va de -32.768 a 32.767.
- Entero grande (integer): entero de cuatro bytes con una precisión de 10 dígitos. El rango de enteros grandes va de -2.147.483.648 a +2.147.483.647.
- Entero superior (bigint): entero de ocho bytes con una precisión de 19 dígitos. El rango de enteros grandes va de -9 223 372 036 854 775 808 a +9 223 372 036 854 775 807.
- Decimal (decimal o numérico): número decimal empaquetado con una coma decimal implícita. La posición de la coma decimal la determinan la precisión y la escala del número. La escala, que es el número de dígitos en la parte de la fracción del número, no puede ser negativa ni mayor que la precisión. La precisión máxima es de 31 dígitos. Todos los valores de una columna decimal tienen la misma precisión y escala. El rango de una variable decimal o de los números de una columna decimal es de -n a +n, donde el valor absoluto de n es el número mayor que puede representarse con la precisión y escalas aplicables. El rango máximo va de -1031+1 a 1031-1.
- Coma flotante de precisión simple (real): aproximación de 32 bits de un número real. El número puede ser cero o puede estar en el rango de -3,4028234663852886e+38 a -1.1754943508222875e-38, o de 1,1754943508222875 e-38 a 3,4028234663852886e+38.
- Coma flotante de doble precisión (double o float): aproximación de 64 bits de un número real. El número puede ser cero o puede estar en el rango de -1,7976931348623158e+308 a -2,2250738585072014e-308, o de 2,2250738585072014 e-308 a 1,7976931348623158e+308.
- Char: permite almacenar cadenas de texto de longitud fija.
- Varchar: permite almacenar cadenas de texto de longitud variable.
- Date: permite almacenar valores de fecha.
- Time: permite almacenar valores de hora.
- Timestamp: permite almacenar valores de fecha y hora.
- BLOB (binary large object): almacenamiento basado en binario, donde los bytes no representan caracteres (sirve para, por ej.: video, audio, etc.).
- CLOB (character large object): almacenamiento basado en caracteres, donde los bytes tienen sentido presentándose como tales (sirven para, por ej.: documentos de texto).
- Inserción (INSERT): para insertar un registro en una tabla con FK, la base de datos validará que el valor insertado en el atributo que es FK exista en la tabla a la que hace referencia.
- Actualización (UPDATE) y borrado (DELETE): para la actualización y borrado de registros con atributos que son FK se debe decidir qué acción tomar:
- Restringir (RESTRICT): restringir la modificación o borrado de los datos en la tabla a la que referencia el atributo que es FK.
- Cascada (CASCADE): la actualización de los datos en la tabla a la que hace referencia el atributo que es FK actualiza los registros en la tabla con el nuevo valor de dicho atributo. En el caso del borrado, se borran los registros que tenían ese valor.
- Fijarlos como nulos (SET NULL): igual que en el caso anterior, sólo que los atributos referenciados por la FK son seteados como null cuando se actualizan o borran los registros de la tabla a la que se referencian.
Aproximados
Carácter
Booleanos
Permite almacenar valores lógicos (verdadero o falso).
Fecha/hora
Objetos de gran tamaño
Datos requeridos (not null)
Al crear el esquema de la base de datos se deben indicar aquellos atributos que serán optativos de completar (es decir, que permiten valor null) y los que serán obligatorios (not null). Null representa la ausencia de valor (valor desconocido o no aplicable). Aparece en aquellos campos de un registro de la base de datos donde no haya un valor asignado. La forma especial de tratarlos puede generar problemas. En las consultas a la base de datos, por ejemplo, si no se especifica en la misma que traiga datos null, la consulta no los va a considerar.
Las PK, por definición, no admiten null ya que, al permitir identificar unívocamente a un registro, son datos obligatorios. Además, la PK valida que no exista otro registro con el mismo valor.
Las claves alternativas son tratadas en el esquema como UNIQUE: pese a no ser PK, esta característica obliga a esos atributos a cumplir con el criterio de unicidad y, así, no permitir que los mismos posean valores duplicados en diferentes registros de una misma entidad.
Integridad referencial
Cuando se define una FK, se indica qué se debe hacer cuando se realiza alguna de las siguientes operaciones:
Vistas
No resulta deseable que todos los usuarios vean el modelo lógico completo. Las consideraciones de seguridad pueden exigir que se oculten ciertos datos a los usuarios. Por otro lado, puede que se desee crear un conjunto personalizado de relaciones que se adapte mejor a la intuición de un usuario determinado que el modelo lógico.
Las relaciones que no forman parte del modelo lógico, pero se hacen visibles a los usuarios como relaciones virtuales se denominan vistas. Las vistas son consultas a la base de datos cuya estructura (es decir, la consulta) se guarda en el diccionario de datos. Es un medio para ofrecer al usuario un modelo personalizado de la base de datos. Las vistas pueden ocultar datos que éste no necesite ver. La capacidad de las vistas de ocultar datos sirve tanto para simplificar el uso del sistema como para mejorar la seguridad. Las vistas simplifican el uso del sistema porque restringen la atención de los usuarios a los datos de interés. Aunque se puede negar a un usuario el acceso directo a una relación, se le puede permitir a ese usuario el acceso a parte de esa relación mediante una vista. Por tanto, una combinación de seguridad en el nivel relacional y de seguridad en el nivel de las vistas limita el acceso de los usuarios precisamente a los datos que necesitan.
Una vez creada una vista, la misma puede reutilizarse para no repetir nuevamente la consulta que le dio origen. Incluso se puede recuperar una vista en otra consulta añadiendo otras sentencias.
Cuando se define una vista, el sistema de la base de datos guarda la definición de la vista, en vez del resultado de la evaluación de la expresión del álgebra relacional que la define, es decir que los datos (obtenidos de la consulta) no se almacenan. Siempre que aparece una relación de vistas en una consulta, se sustituye por la expresión de consulta almacenada. Por tanto, la relación de vistas se vuelve a calcular siempre que se evalúa la consulta (no se actualizan automáticamente).
Las relaciones de vistas pueden aparecer en cualquier lugar en que puedan hacerlo los nombres de las relaciones, salvo las restricciones al uso de las vistas en expresiones de actualización. Por tanto, se pueden utilizar vistas en las expresiones que definen otras vistas.
Esquemas estructurados (bases de datos no relacionales)
Varias áreas de aplicaciones de los sistemas de bases de datos están limitadas por las restricciones del modelo de datos relacional. En consecuencia, los investigadores han desarrollado varios modelos de datos para tratar con estos dominios de aplicación. Por ejemplo, existen algunas razones por las cuales un esquema podría no tener un diccionario de datos:
Los SGBD relacionales, sus modelos y protocolos, tienen la fuerte premisa de cuidar al máximo la consistencia de las bases de datos, lo que implica límites en el desempeño de estas soluciones. Es por esto que surgen nuevas arquitecturas y modelos de gestión de datos bajo la denominación de no relacionales.
Los esquemas estructurados permiten la especificación de los datos en los que cada elemento de datos del mismo tipo puede tener conjuntos de atributos diferentes. No utilizan un diccionario de datos; no obstante, manejan el concepto de tipo de dato. Estos esquemas son autodefinidos, es decir, se van construyendo a medida que se insertan los datos. No se utilizan PK, FK, claves UNIQUE ni claves de cualquier otro tipo.
Por defecto, no hay un esquema predefinido para las entidades. Se pueden configurar restricciones de manera adicional, pero cuantas más se agreguen, peor va a funcionar el esquema y menos eficiente va a hacer. Cualquier restricción o validación que sea necesario hacer debe ser implementada en la aplicación por el programador.
Los elementos de un esquema relacional funcionan de manera diferente en los semiestructurados:
Al crear la base de datos, se define el nombre de la colección y, a partir de ahí, ya se pueden guardar datos. Al agregar un documento (registro) se le añade automáticamente un atributo definido como objeto, que es un documento embebido. Dos campos de dos documentos distintos pueden ser completados con tipos de datos distintos. Sin embargo, existen atributos exclusivos a los distintos documentos.
La herramienta visual permite ver el contenido de una colección como lista o como tabla.
Las referencias guardan las relaciones entre los datos a través de links o punteros de un documento a otro. Se trata de modelos de datos normalizados: las aplicaciones requieren acceder a más de un documento para recuperar datos relacionados.
Los documentos embebidos establecen las relaciones entre los datos, almacenando datos relacionados dentro de su estructura como subdocumentos, dentro de un campo o array. Estos modelos desnormalizados permiten a las aplicaciones recuperar y manipular datos relacionados en una sola operación de base de datos.
Comparativo Mongodb con BDs Relacionales
El documento tiene un atributo que define como “Objeto”, que es un documento embebido.
La herramienta visual, me permite ver el contenido de una colección como lista o como tabla.
Me permite insertar un documento con el valor “No” en Finalizo CBC y otro con el valor Verdadero en un atributo con el mismo nombre. Ambos en la misma colección.
Por otro lado, hay atributos exclusivos a los distintos documentos.
Creó una validación, asociada a la colección “Alumno”, que indique que el campo “Nro Registro” es un entero y es obligatorio.
Intento insertar un documento que no tiene el campo Nro Registro. El sistema no permite la operación
Esquemas no estructurados
En los esquemas no estructurados hay muy poca información respecto a los datos embebidos en ellos, como es el caso de bases de datos que guardan archivos HTML, de audio o de video.
Lenguaje de etiquetado extensible (XML)
El Extensible Markup Language (XML, lenguaje de etiquetado extensible) es un estándar no licenciado, independiente de plataformas, y soportado por toda la industria de software. Permite representar los datos de bases de datos, así como muchas clases de datos estructurados. Es útil como formato de datos cuando las aplicaciones deben comunicarse con otras, o cuando hay que integrar información de varias aplicaciones.
A diferencia de HTML, XML no impone las etiquetas permitidas, y se pueden elegir como sea necesario para cada aplicación. Esta característica es la clave de la función principal de XML en la representación e intercambio de datos, mientras que HTML se usa principalmente para el formato de documentos.
El constructor fundamental en un documento XML es el elemento. Un elemento es sencillamente un par de etiquetas de inicio y finalización coincidentes y todo el texto que aparece entre ellas. XML permite estructuras anidadas: los elementos complejos se componen de otros elementos de manera jerárquica. En cambio, los elementos simples se componen de un solo valor. Esta estructura posibilita guardar elementos simples diferentes que formen parte del mismo elemento complejo. Posee dos grandes usos:
Transmisión de datos
XML permite el intercambio de datos con ampliaciones de actores externos o internos a la organización. Sus características son:
Basado en información-documentos
Otro de los usos del XML es para presentar información. En estos casos se lo usa como medio de estructurar, almacenar y recuperar documentos y/o información. Es el estándar de facto para almacenar documentos por su capacidad de almacenar y utilizar su estructura (párrafos, secciones, notas al pie, etc.) y metadatos (autor, año de publicación, etc.). En estos casos, XML se caracteriza por:
La validación de un documento en como un contrato:
La validación de un esquema en XML se hace con un archivo adicional que define la estructura. Así, se tiene un archivo XML con los datos (que sería el diccionario) y otro que, con una herramienta, válida la estructura. La aplicación creadora verifica que el documento ha sido creado apropiadamente y la aplicación receptora verifica que posee el formato esperado.
Existen dos posibilidades para validar un documento:
Sin embargo, no define los tipos de datos: todos los valores son representados como cadenas de texto: